#!/bin/bash

# 检查 kubectl 是否安装
if ! command -v kubectl &> /dev/null; then
    echo "错误：kubectl 未安装，请先安装 kubectl 并配置好 k8s 集群连接"
    exit 1
fi

# 检查是否能连接到 k8s 集群
if ! kubectl cluster-info &> /dev/null; then
    echo "错误：无法连接到 k8s 集群，请检查 kubectl 配置或集群状态"
    exit 1
fi
kubectl create namespace app
# 定义 k8s 资源目录，根据实际目录结构调整，这里假设脚本和 k8s 目录同级，可按需修改

K8S_DIR="."
kubectl apply -f ${K8S_DIR}/backend/    -n app
kubectl apply -f ${K8S_DIR}/frontend/   -n app
# 部署数据库相关资源
echo "开始部署数据库相关资源..."
kubectl apply -f ${K8S_DIR}/database/db-secret.yaml
kubectl apply -f ${K8S_DIR}/database/mysql-deployment.yaml
kubectl apply -f ${K8S_DIR}/database/mysql-pvc.yaml
kubectl apply -f ${K8S_DIR}/database/mysql-svc.yaml
echo "数据库相关资源部署完成，稍等片刻让 Pod 启动..."
# 等待数据库 Pod 就绪，这里简单等待 10 秒，也可结合 kubectl wait 更精准判断
sleep 3

# 部署后端相关资源
echo "开始部署后端相关资源..."
kubectl apply -f ${K8S_DIR}/backend/backend-config.yaml
kubectl apply -f ${K8S_DIR}/backend/backend-secret.yaml
kubectl apply -f ${K8S_DIR}/backend/backend-deployment.yaml
kubectl apply -f ${K8S_DIR}/backend/backend-pvc.yaml
kubectl apply -f ${K8S_DIR}/backend/backend-svc.yaml
echo "后端相关资源部署完成，稍等片刻让 Pod 启动..."
sleep 3

# 部署前端相关资源
echo "开始部署前端相关资源..."
kubectl apply -f ${K8S_DIR}/frontend/frontend-config.yaml
kubectl apply -f ${K8S_DIR}/frontend/frontend-deploy-latest.yaml
kubectl apply -f ${K8S_DIR}/frontend/frontend-svc.yaml
echo "前端相关资源部署完成"

# 展示部署后的资源状态，方便查看
echo "部署完成，当前相关资源状态如下："
kubectl get all -n app

echo "所以本地网址的端口是"
kubectl get svc frontend-service -n app -o jsonpath='{.spec.ports[0].nodePort}'
echo "现在可以登一下localhost试一下了"